# -*- coding:UTF-8 -*-
from openpyxl import load_workbook

"""
描述： 使用均值插入法补全 excel 数值
author：wwj[yeshengkele@outlook.com]
文件要求：excel 格式文件，不能出现数字以外的格式，待计算的行需为空行
"""
# 这里需要修改为你的源文件
wb = load_workbook('/Users/wangweijie/Desktop/test1.xlsx')
# 这里需要修改为需要操作的 sheet名称
ws = wb['Sheet1']
# 获取总列数
maxColumn = ws.max_column
# 获取总行数
maxRows = ws.max_row
# 首先遍历所有列
for collum in range(1, maxColumn + 1):
    # 申请一个空值的行数 list
    noneRowsList = []
    # 存放有值的行数
    countRows = 0
    # 存放有值的总和
    sumRows = 0
    for rows in range(1, maxRows + 1):
        # 首先便利数据查询有 记录 有 None 值的行数
        cellvalue = ws.cell(row=rows, column=collum).value
        if cellvalue == None:
            noneRowsList.append(rows)
        else:
            countRows = countRows + 1
            try:
                sumRows = float(cellvalue) + sumRows
            except:
                print('=======================================')
                print('本行数据转换出错，如果该值不影响计算结果可忽略：')
                print(cellvalue)
                print('=======================================')
    # 计算本行平均值
    avg = sumRows / countRows
    # 遍历有空值的集合
    for noneRows in noneRowsList:
        try:
            ws.cell(row=noneRows, column=collum).value = avg
        except:
            ws.cell(row=noneRows, column=collum).value = "出错"

wb.save('/Users/wangweijie/Desktop/testUopdate.xlsx')
